#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include "dwgobject.h"
#include <QGraphicsView>
#include <QGraphicsScene>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class QGraphicsScene;			// 这里，我们使用了前置申明类的方法，用来取代#include
class MainWindow : public QMainWindow
{
    Q_OBJECT

    enum DrawType			// 定义一个类内部的枚举绘图类型，用于主框架的菜单交互
    {
        DNone,
        DLine,
        DCircle,
        DRectangle
    };
    enum ModifyType		// 定义一个类内部的枚举编辑类型，
    {
        MNone,
        MSelect,
        MDelete
    };

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    DrawType mcurDrawType = DNone;		// 初始化一个枚举绘图类型变量为空
    ModifyType mcurModifyType = MNone;	// 初始化一个枚举编辑类型变量为空

    QVector<DwgObject *> mObjVec ;
    QPainter * mpainter = nullptr;

    qreal m_winScale = 1.0;
    QTransform m_trans;
    QGraphicsScene *m_scene = nullptr;		// 定义一个场景成员变量为空，用于保存图元项
private:
    Ui::MainWindow *ui;

    QString currentFilePath; // 用于跟踪当前文件路径
    bool saveFile(const QString &filePath);
    bool loadFile(const QString &filePath);

    // QWidget interface
protected:
    void mousePressEvent(QMouseEvent *event) override;
private slots:
    void on_actionLine_triggered();			// 画线的槽函数
    void on_actionSelect_triggered();		//  选择的槽函数
    void on_actionCircle_triggered();		// 画圆的槽函数
    void on_actionExit_triggered();			// 退出应用程序的槽函数
    void on_actionNew_triggered();
    void on_actionOpen_triggered();
    void on_actionSave_triggered();
    void on_actionSave_as_triggered();

    // QWidget interface
    void on_actionRectangle_triggered();
};
#endif // MAINWINDOW_H
